//package com.ruoyi.system.service.impl;
//
//import java.io.Serializable;
//import java.util.Date;
//import java.util.Deque;
//import java.util.List;
//import com.ruoyi.common.utils.spring.SpringUtils;
//import org.apache.shiro.cache.Cache;
//import org.apache.shiro.cache.ehcache.EhCacheManager;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import com.ruoyi.common.constant.ShiroConstants;
//import com.ruoyi.common.utils.DateUtils;
//import com.ruoyi.common.utils.StringUtils;
//import com.ruoyi.system.domain.SysUserOnline;
//import com.ruoyi.system.mapper.SysUserOnlineMapper;
//import com.ruoyi.system.service.ISysUserOnlineService;
//
///**
// * 在线用户 服务层处理
// *
// * @author ruoyi
// */
//@Service
//public class SysUserOnlineServiceImpl implements ISysUserOnlineService
//{
//    @Autowired
//    private SysUserOnlineMapper userOnlineDao;
//
//    /**
//     * 通过会话序号查询信息
//     *
//     * @param sessionId 会话ID
//     * @return 在线用户信息
//     */
//    @Override
//    public SysUserOnline selectOnlineById(String sessionId)
//    {
//        return userOnlineDao.selectOnlineById(sessionId);
//    }
//
//    /**
//     * 通过会话序号删除信息
//     *
//     * @param sessionId 会话ID
//     * @return 在线用户信息
//     */
//    @Override
//    public void deleteOnlineById(String sessionId)
//    {
//        SysUserOnline userOnline = selectOnlineById(sessionId);
//        if (StringUtils.isNotNull(userOnline))
//        {
//            userOnlineDao.deleteOnlineById(sessionId);
//        }
//    }
//
//    /**
//     * 通过会话序号删除信息
//     *
//     * @param sessions 会话ID集合
//     * @return 在线用户信息
//     */
//    @Override
//    public void batchDeleteOnline(List<String> sessions)
//    {
//        for (String sessionId : sessions)
//        {
//            SysUserOnline userOnline = selectOnlineById(sessionId);
//            if (StringUtils.isNotNull(userOnline))
//            {
//                userOnlineDao.deleteOnlineById(sessionId);
//            }
//        }
//    }
//
//    /**
//     * 保存会话信息
//     *
//     * @param online 会话信息
//     */
//    @Override
//    public void saveOnline(SysUserOnline online)
//    {
//        userOnlineDao.saveOnline(online);
//    }
//
//    /**
//     * 查询会话集合
//     *
//     * @param userOnline 在线用户
//     */
//    @Override
//    public List<SysUserOnline> selectUserOnlineList(SysUserOnline userOnline)
//    {
//        return userOnlineDao.selectUserOnlineList(userOnline);
//    }
//
//    /**
//     * 强退用户
//     *
//     * @param sessionId 会话ID
//     */
//    @Override
//    public void forceLogout(String sessionId)
//    {
//        userOnlineDao.deleteOnlineById(sessionId);
//    }
//
//    /**
//     * 清理用户缓存
//     *
//     * @param loginName 登录名称
//     * @param sessionId 会话ID
//     */
//    @Override
//    public void removeUserCache(String loginName, String sessionId)
//    {
//        EhCacheManager ehCacheManager = SpringUtils.getBean(EhCacheManager.class);
//        Cache<String, Deque<Serializable>> cache = ehCacheManager.getCache(ShiroConstants.SYS_USERCACHE);
//        Deque<Serializable> deque = cache.get(loginName);
//        if (StringUtils.isEmpty(deque) || deque.size() == 0)
//        {
//            return;
//        }
//        deque.remove(sessionId);
//    }
//
//    /**
//     * 查询会话集合
//     *
//     * @param expiredDate 失效日期
//     */
//    @Override
//    public List<SysUserOnline> selectOnlineByExpired(Date expiredDate)
//    {
//        String lastAccessTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, expiredDate);
//        return userOnlineDao.selectOnlineByExpired(lastAccessTime);
//    }
//}
